<?php
include_once "../classes/dao/DetalharRelatorioDAO.class.php";
include_once "../classes/dao/VisualizarRelatorioDAO.class.php";
include_once "../classes/dao/SalvarRelatorioDAO.class.php";
include_once "../classes/dao/ImportarRelatorioDAO.class.php";
include_once "../classes/dao/RemoverRelatorioDAO.class.php";
include_once "../classes/dao/GerarRelatorioExcelDAO.class.php";

class RelatorioService {
	
	private $relatorioDetalhado;
	private $result;
	private $msg;
	
	/* Recupera as informacoes do detalhamento do relatorio */
	public function detalhesRelatorio($relatorio) {
		$dao = new DetalharRelatorioDAO();
		$status = false;
		
		try {
			$this->relatorioDetalhado = $dao->detalhesRelatorio($relatorio);
			$status = true;
		} catch (Exception $exc) {
			$this->msg = $exc->getMessage();
		}
		
		return $status;
	}
	
	/* Visualizar relatorio */
	public function visualizarRelatorio($relatorio) {
		$dao = new VisualizarRelatorioDAO();
		$status = false;
		
		try {
			$this->result = $dao->visualizarRelatorio($relatorio);
			$status = true;
		} catch (Exception $exc) {
			$this->msg = $exc->getMessage();
		}
		
		return $status;
	}
	
	public function salvarRelatorio ($acao, $relatorio) {
		$dao = new SalvarRelatorioDAO();
		$relatorioID = 0;
		
		if ($acao == RequestConstants::SALVAR) {
			$relatorioID = $dao->salvarRelatorio($relatorio);	
		} else {
			$relatorioID = $dao->atualizarRelatorio($relatorio);
		}
		
		return $relatorioID;
	}
	
	/* Executa a acao importar ou excluir do relatorio */
	public function acaoRelatorio($acao, $id, $controller) {	
		$status = false;
		$relatorio;
		if ($acao == "importar") {
			$existe = false;
			$relatoriosSalvos = $controller->getParametroSession(SessionConstants::RELATORIOS_SALVOS);
			if (isset($relatoriosSalvos)) {
				foreach ($relatoriosSalvos as $rel) {
					$idRel = $rel->getId();
					if ($idRel == $id) {
						$relatorio = $rel;
						$existe = true;
						break;
					}
				}
			} 
			if ($existe) {
				$this->msg = MensagensConstants::ACAO_INVALIDA;
			} else {
				$dao = new ImportarRelatorioDAO();
				$relatorio = $controller->getParametroSession(SessionConstants::RELATORIO);
				$status = $dao->importarRelatorio($id,$relatorio);
			}		
		} else if ($acao == "remover") {
			$existe = false;
			$relatoriosSalvos = $controller->getParametroSession(SessionConstants::RELATORIOS_SALVOS);
			if (isset($relatoriosSalvos)) {
				foreach ($relatoriosSalvos as $rel) {
					$idRel = $rel->getId();
					if ($idRel == $id) {
						$relatorio = $rel;
						$existe = true;
						break;
					}
				}
			} 
			if ($existe) {
				$dao = new RemoverRelatorioDAO();
				$status = $dao->removerRelatorio($id);
			} else {
				$this->msg = MensagensConstants::ACAO_INVALIDA;				
			}
		} else {
			$msg = MensagensConstants::ACAO_INVALIDA;
		}
		
		return $status;
	}
	
	public function geraRelatorioExcel ($query) {
		$dao = new GerarRelatorioExcelDAO();
		$monitoramento = null;
		
		$monitoramento = $dao->gerar($query);
		return $monitoramento;
	}
	
	/* Retorna o relatorio detalhado */
	public function getRelatorioDetalhado() {
		return $this->relatorioDetalhado;
	}
	
	/* Retorna o resultado do relatorio */
	public function getResultado() {
		return $this->result;
	}
	
	/* Retorna a mensagem de erro */
	public function getMensagem() {
		return $this->msg;
	}
	
}
?>